home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 3.0 KB | 112 lines | [TEXT/CWIE] |
- // EventMaker.cp
-
- #ifndef EventMaker_h
- #include "EventMaker.h"
- #endif
- #ifndef NullEvent_h
- #include "NullEvent.h"
- #endif
- #ifndef MouseUpEvent_h
- #include "MouseUpEvent.h"
- #endif
- #ifndef MouseDownEvent_h
- #include "MouseDownEvent.h"
- #endif
- #ifndef MouseMovedEvent_h
- #include "MouseMovedEvent.h"
- #endif
- #ifndef KeyUpEvent_h
- #include "KeyUpEvent.h"
- #endif
- #ifndef KeyDownEvent_h
- #include "KeyDownEvent.h"
- #endif
- #ifndef AutoKeyEvent_h
- #include "AutoKeyEvent.h"
- #endif
- #ifndef ResumeEvent_h
- #include "ResumeEvent.h"
- #endif
- #ifndef SuspendEvent_h
- #include "SuspendEvent.h"
- #endif
- #ifndef HighLevelEvent_h
- #include "HighLevelEvent.h"
- #endif
- #ifndef UpdateEvent_h
- #include "UpdateEvent.h"
- #endif
- #ifndef ActivateEvent_h
- #include "ActivateEvent.h"
- #endif
- #ifndef DeactivateEvent_h
- #include "DeactivateEvent.h"
- #endif
- #ifndef DiskInsertionEvent_h
- #include "DiskInsertionEvent.h"
- #endif
- #ifndef SingleAllocator_h
- #include "SingleAllocator.h"
- #endif
-
- #define MaxSize2(A,B) ( (sizeof(A)>sizeof(B)) ? sizeof(A) : sizeof(B) )
- #define MaxSize4(A,B,C,D) ( (MaxSize2(A,B)>MaxSize2(C,D) ? MaxSize2(A,B) : MaxSize2(C,D) ) )
- #define MaxSize8(A,B,C,D,E,F,G,H) ( (MaxSize4(A,B,C,D)>MaxSize4(E,F,G,H) ? MaxSize4(A,B,C,D) : MaxSize4(E,F,G,H) ) )
- #define MaxSize16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q) \
- ( (MaxSize8(A,B,C,D,E,F,G,H)>MaxSize8(I,J,K,L,M,N,P,Q) ? MaxSize8(A,B,C,D,E,F,G,H) : MaxSize8(I,J,K,L,M,N,P,Q) ) )
-
- #define maxEventSize MaxSize16( NullEvent, MouseUpEvent, MouseDownEvent, MouseMovedEvent, \
- KeyUpEvent, KeyDownEvent, AutoKeyEvent, ResumeEvent, \
- SuspendEvent, HighLevelEvent, UpdateEvent, ActivateEvent, \
- DeactivateEvent, DiskInsertionEvent, NullEvent, NullEvent )
-
- Event& EventMaker::MakeEvent( const EventRecord& event )
- {
- static SingleAllocator< Event, maxEventSize > storage;
- storage.DeleteAll();
-
- switch( event.what )
- {
- case nullEvent: return *new(storage) NullEvent( event );
- case mouseDown: return *new(storage) MouseDownEvent( event );
- case mouseUp: return *new(storage) MouseUpEvent( event );
- case keyDown: return *new(storage) KeyDownEvent( event );
- case keyUp: return *new(storage) KeyUpEvent( event );
- case autoKey: return *new(storage) AutoKeyEvent( event );
- case updateEvt: return *new(storage) UpdateEvent( event );
- case diskEvt: return *new(storage) DiskInsertionEvent( event );
-
- case activateEvt:
- if ( event.modifiers & activeFlag )
- return *new(storage) ActivateEvent( event );
- else
- return *new(storage) DeactivateEvent( event );
-
- case kHighLevelEvent:
- return *new(storage) HighLevelEvent( event );
-
- case osEvt:
- switch ( Byte3( event.message ) )
- {
- case suspendResumeMessage:
- if ( (event.message & resumeFlag) != 0 )
- return *new(storage) ResumeEvent( event );
- else
- return *new(storage) SuspendEvent( event );
-
- case mouseMovedMessage:
- return *new(storage) MouseMovedEvent( event );
-
- default:
- Assert( 0 );
- break;
- }
-
- default:
- Assert( 0 );
- break;
- }
-
- return *new(storage) NullEvent( event );
- }
-